package EJBTienda;

import java.util.ArrayList;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import Modelo.ProdCarrito;
import Modelo.Producto;

@Stateless(name="EJBRemote", mappedName="EJBRemote")
public class EjbCarrito implements EjbCarritoRemote {

	@PersistenceContext(unitName="JPADBTarea11")
	private EntityManager entityM;
		
    public EjbCarrito() {
        
    }

	public ArrayList<ProdCarrito> agregar(Producto p, ArrayList<ProdCarrito> carrito) {
		if (existeProdCarrito(p.getId(), carrito)){
			ProdCarrito prodCarrito = obtenerProdCarrito(p.getId(), carrito);
			prodCarrito.setCant(prodCarrito.getCant()+1);
		}else{
			ProdCarrito pNew = new ProdCarrito(p, 1);
			carrito.add(pNew);
		}
		System.out.println("Agrege el prod: "+p.getNombre()+" al carrito");
		return carrito;
	}

	public ArrayList<Producto> obtenerProdDisp(){
		Query query = entityM.createQuery("Select p from Producto p where p.stock > 0");
		ArrayList<Producto> productos = (ArrayList<Producto>)query.getResultList();
		return productos;
	}
	
	public void realizarVenta(ArrayList<ProdCarrito> carrito) {
		for(ProdCarrito p : carrito){
		   Producto prod = entityM.find(Producto.class, p.getProd().getId());
		   prod.setStock(prod.getStock()-p.getCant());
		}
	}

	public ArrayList<ProdCarrito> eliminarProd(int id, ArrayList<ProdCarrito> carrito) {
		int indice = 0;
		int sw =0;
		for(ProdCarrito p : carrito){
			if(p.getProd().getId() == id){
				sw = 1;
			}
			if (sw == 0){
				indice++;
			}
		}
		
		carrito.remove(indice);
		return carrito;
	}
	
	//****************************************************
	private boolean existeProdCarrito(int id, ArrayList<ProdCarrito> carrito){
		boolean existe = false;
		for(ProdCarrito p : carrito){
			if(p.getProd().getId() == id){
				existe = true;
			}
		}
		return existe;
	}
	
	private ProdCarrito obtenerProdCarrito(int id, ArrayList<ProdCarrito> carrito){
		ProdCarrito prodCarrito = new ProdCarrito();
		for(ProdCarrito p : carrito){
			if(p.getProd().getId() == id){
				prodCarrito = p;
			}
		}
		return prodCarrito;
	}

	

}
